home *** CD-ROM | disk | FTP | other *** search
/ PC Electronics Plus 3 / PC Electronics Plus 3.iso / subdwg / lsp / tabla.lsp < prev   
Lisp/Scheme  |  1994-11-14  |  3KB  |  79 lines

  1. ; ************************************************************
  2. ;* Comando tabla
  3. ;* Este comando se usa para insertar un archivo de texto (ASCII)
  4. ;* que generalmente corresponde al listado de materiales.
  5. ;* Al insertar el texto automaticamente dibuja una linea entre la\s
  6. ;* filas de texto.
  7. ;* El archivo de texto se puede generar con una hoja de calculo
  8. ;* (lotus 1-2-3 etc.)
  9. ;*
  10. ;*
  11. ;* Pregunta los siguientes datos:
  12. ;* - Nombre archivo : debe ingresarse el nombre del archivo de texto con
  13. ;*                    la extension y su path.
  14. ;* - Altura texto   : debe ingresar la altura del texto ya sea desde el
  15. ;*                    teclado o con el mouse.
  16. ;* - Espacio entre texto : debe ingresar la distancia entre las filas de
  17. ;*                         texto ya sea desde el teclado o con el mouse.
  18. ;* - Punto de insercion : debe ingresar el punto donde se quiere empesar
  19. ;*                        a escribir el texto ya sea con el teclado o el
  20. ;*                        mouse
  21.  
  22.  
  23. (defun c:tabla ()
  24.  
  25. ;* recordar quitar osnap, commandecho etc.
  26.  
  27.  (setq pi 3.141516)
  28.  (setq pi/2 (/ pi 2.0))
  29.  
  30.  (setq nombreArchivo     (getstring "\nNombre archivo: "))
  31.  (setq alturaTexto       (getdist   "\nAltura texto: "))
  32.  (setq espacioEntreTexto (getdist   "\nEspacio entre texto: "))
  33.  (setq insercion         (getpoint  "\nPunto de insercion: "))
  34.  
  35.  (setq archivo (open nombreArchivo "r"))
  36.  (if (not archivo) 
  37.      (progn
  38.          (princ (strcat "\nEl archivo: " nombreArchivo " no existe."))
  39.          (exit)
  40.      )
  41.   )
  42.  
  43.  
  44.  (setq numeroDeFilas 0)
  45.  (setq largoLinea  0)
  46.  (setq listaTexto nil)
  47.  ;
  48.  ; leemos la filas y calculamos el largo de la fila mas larga
  49.  ;
  50.  (while archivo
  51.      (setq texto (read-line archivo))
  52.      (if texto 
  53.          (progn
  54.             (setq numeroDeFilas (+ numeroDeFilas 1))
  55.             (if (> (strlen texto) largoLinea) (setq largoLinea (strlen texto)))
  56.             (setq listaTexto (append listaTexto (list texto)))
  57.          )
  58.          (setq archivo nil)
  59.       )
  60.   )
  61.   ;
  62.   ; dibujamos la informacion en la pantalla
  63.   ;
  64.   (setq largoLinea (* largoLinea alturaTexto))
  65.   (setq insercion (polar insercion  pi/2 (/ espacioEntreTexto 2.0)))
  66.   (repeat numeroDeFilas
  67.       
  68.       (setq texto (car listaTexto))
  69.       (setq listaTexto (cdr listaTexto))
  70.       
  71.       (command "text" insercion alturaTexto 0 texto )
  72.       
  73.       (setq insercionLinea (polar insercion (- pi/2) (/ espacioEntreTexto 2.0)))
  74.       (setq insercion (polar insercion (- pi/2) (+ alturaTexto espacioEntreTexto)))
  75.       
  76.       (command "line" insercionLinea (polar insercionLinea 0 largoLinea) "")
  77.    )
  78. )
  79.